package com.pethospital.dto;

import com.pethospital.entity.Conversation;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 会话视图对象，用于返回给前端展示的会话数据
 */
@Data
public class ConversationVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 会话ID
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 用户姓名
     */
    private String userName;
    
    /**
     * 用户头像
     */
    private String userAvatar;

    /**
     * 医护人员ID
     */
    private Long staffId;

    /**
     * 医护人员姓名
     */
    private String staffName;

    /**
     * 医护人员头像
     */
    private String staffAvatar;

    /**
     * 最后一条消息内容
     */
    private String lastMessage;
    
    /**
     * 最后一条消息时间
     */
    private LocalDateTime lastMessageTime;

    /**
     * 未读消息数量
     */
    private Integer unreadCount;

    /**
     * 会话状态：0-进行中，1-已结束
     */
    private Integer status;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 从会话实体转换为视图对象
     */
    public static ConversationVO fromEntity(Conversation conversation) {
        if (conversation == null) {
            return null;
        }
        
        ConversationVO vo = new ConversationVO();
        vo.setId(conversation.getId());
        vo.setUserId(conversation.getUserId());
        vo.setStaffId(conversation.getStaffId());
        vo.setStatus(conversation.getStatus());
        vo.setCreateTime(conversation.getCreateTime());
        vo.setUpdateTime(conversation.getUpdateTime());
        vo.setLastMessageTime(conversation.getUpdateTime()); // 使用更新时间作为最后消息时间
        // 注意：lastMessage需要在service层单独设置
        return vo;
    }
} 